home *** CD-ROM | disk | FTP | other *** search
-
- function FindMatchingWindows(SearchFor: string; AtBeginning: boolean; var FoundWindows: TStringList): longint;
-
- {Search window list for all Windows where the title contains or begins
- with (AtBeginning) SearchFor. Returns a TStringList with the title of the
- found windows as string and the window-Handle as Object.
- It is up to you to create and free the TStringList}
-
- var
- hWndFirst, hWndCurWin, hWndDesk: HWnd;
- szWinText: pChar;
- WinText: string;
- foundAt: byte;
- begin
- hWndDesk:= GetDesktopWindow;
- {This ist the parent of alle top-level windows}
- if hWndDesk <> 0 then
- hWndCurWin := GetWindow(hWndDesk,GW_CHILD)
- else
- {place error handling here}
- exit;
- if not assigned(FoundWindows) then
- {you have to create Stringlist before passing the
- variable to this function}
- exit;
- getMem(szWinText,256);
- hWndFirst:= hWndCurWin;
- while (hWndCurWin <> 0) do
- begin
- GetWindowText(hWndCurWin, szWinText,255);
- WinText:= strpas(szWinText);
- if SearchFor = '' then
- begin
- if WinText = '' then Wintext := format ('Fenster Nr. %d (Ohne Titel)',[hWndCurWin]);
- FoundWindows.addObject(WinText,TObject(hWndCurWin))
- end
- else
- begin
- foundAt:= pos(SearchFor, WinText);
- if (not atBeginning and (foundAt > 0)) or (foundAt = 1) then
- begin
- FoundWindows.addObject(WinText,TObject(hWndCurWin));
- end;
- end;
- hWndCurWin := GetWindow(hWndCurWin,GW_HWNDNEXT);
- end;
- freeMem(szWinText,256);
- result := FoundWindows.count;
- end;
-
-